package co.yixiang.modules.shop.utils;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Font;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.tool.xml.XMLWorkerFontProvider;

/**
 * 重写 字符设置方法，解决中文乱码问题
 */
public class MyFontsProvider extends XMLWorkerFontProvider {

    public MyFontsProvider() {
        super(null, null);
    }

    /**
     * 在实际使用中，发现以上代码在windows环境中项目可以正常导出中文的PDF文件，但把项目部署到linux环境就又不显示中文了，原因是linux环境中可能没有 相应的 宋体 字体文件
     *
     * @param fontname
     * @param encoding
     * @param size
     * @param style
     * @return
     */
//    @Override
//    public Font getFont(final String fontname, String encoding, float size, final int style) {
//        String fntname = fontname;
//        //windows上定义使用的字体
////        if (fntname == null) {
////            fntname = "宋体";
////        }
//        //linux上定义使用的字体
//        if (fntname == null) {
//            fntname = "fontFile/simsun.ttf";
//        }
//        if (size == 0) {
//            size = 4;
//        }
//        return super.getFont(fntname, encoding, size, style);
//    }
    @Override
    public Font getFont(final String fontname, final String encoding,
                        final boolean embedded, final float size, final int style,
                        final BaseColor color) {
        BaseFont bf = null;
        try {
            try {
                bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
                        BaseFont.NOT_EMBEDDED);
            } catch (java.io.IOException e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        Font font = new Font(bf, size, style, color);
        font.setColor(color);
        return font;
    }
}
